package com.aceitunaproject.server.settlement;

import com.aceitunaproject.server.entity.settlement.Settlement;
import com.aceitunaproject.server.entity.unit.Unit;
import com.aceitunaproject.shared.exceptions.gamerules.IllegalActionException;


/**
 * Unit manager interface for handling unit-related operations
 * 
 * @author Federico Bergstein
 */
public interface SettlementManager {

	/**
	 * Builds a settlement in the designated coordinates with the designated
	 * unit
	 * 
	 * @param name
	 *            the name of the new settlement
	 * @param settlementX
	 *            designated coordinate x
	 * @param settlementY
	 *            designated coordinate y
	 * @param unit
	 *            the unit that builds the settlement
	 * @throws IllegalActionException 
	 */
	Settlement buildSettlement(String name, int positionX, int positionY,
			Unit unit) throws IllegalActionException;

	/**
	 * Gets a settlement from the object store
	 * @param settlementID the id of the settlement to get
	 * @return a settlement
	 */
	public Settlement getSettlement(long settlementID);

}
